为您找到与linux markdown编辑器相关的共200个结果:
nano是Unix和类Unix系统中的一个文本编辑器,那么大家知道Linux怎么使用nano和ed文本编辑器吗?读文网小编分享了Linux使用nano和ed文本编辑器的方法,希望对大家有所帮助。
nano
用法: nano [选项] [[+行,列] 文件名]...
光标控制
移动光标:使用用方向键移动。
选择文字:按住鼠标左键拖到。
复制、剪贴和粘贴
复制一整行:Alt+6
剪贴一整行:Ctrl+K
删除一整行:Ctrl+k
粘贴:Ctrl+U
如果需要复制/剪贴多行或者一行中的一部分,先将光标移动到需要复制/剪贴的文本的开头,按Ctrl+6(或者Alt+A)做标记,然后移动光标到 待复制/剪贴的文本末尾。这时选定的文本会反白,用Alt+6来复制,Ctrl+K来剪贴。若在选择文本过程中要取消,只需要再按一次Ctrl+6。
搜索
按Ctrl+W,然后输入你要搜索的关键字,回车确定。这将会定位到第一个匹配的文本,接着可以用Alt+W来定位到下一个匹配的文本。
翻页
用Ctrl+Y到上一页,Ctrl+V到下一页
保存
使用Ctrl+O来保存所做的修改
退出
按Ctrl+X
如果你修改了文件,下面会询问你是否需要保存修改。输入Y确认保存,输入N不保存,按Ctrl+C取消返回。
如果输入了Y,下一步会让你输入想要保存的文件名。如果不需要修改文件名直接回车就行;若想要保存成别的名字(也就是另存为)则输入新名称然后确 定。这个时候也可用Ctrl+C来取消返回。
例:
代码如下:
[root@linux test]# nano test.php #编辑文件
ed
ed 它是一个比较简单的文本编辑器
-G 支持兼容
-s 不进行检查
-p<字符串> 指定提示符
--help 显示帮助信息
--version 显示版本信息
例:
代码如下:
[root@linux test]# ed quduwenaaaaaabbbbbbbbbbbbc.w file #保存文件32q
看过“Linux怎么使用nano和ed文本编辑器”
浏览量:4
下载量:0
时间:
Vi编辑器是Linux的文本编辑器,在Linux系统的运用非常广泛,不少朋友在打开Vi编辑器的时候提示E325: ATTENTION错误,遇到这种情况该怎么办吗?下面读文网小编就给大家介绍下Linux打开Vi编辑器时提示E325:ATTENTION的解决方法。
当打开Vi编辑器时出现以下的提示时不要着急
E325: ATTENTION
Found a swap file by the name “/etc/.profile.swp”
owned by: root dated: Wed Jul 14 10:01:10 2010
file name: /etc/profile
modified: YES
user name: root host name: zhaoyang-laptop
process ID: 1934
While opening file “/etc/profile”
dated: Thu Apr 29 20:18:30 2010
(1) Another program may be editing the same file.
If this is the case, be careful not to end up with two
different instances of the same file when making changes.
Quit, or continue with caution.
(2) An edit session for this file crashed.
If this is the case, use “:recover” or “vim -r /etc/profile”
to recover the changes (see “:help recovery”)。
If you did this already, delete the swap file “/etc/.profile.swp”
to avoid this message.
“/etc/profile” 28 lines, 497 characters
Press ENTER or type command to continue
E325: ATTENTIONFound a swap file by the name “/etc/.profile.swp” owned by: root dated: Wed Jul 14 10:01:10 2010 file name: /etc/profile modified: YES user name: root host name: zhaoyang-laptop process ID: 1934While opening file “/etc/profile” dated: Thu Apr 29 20:18:30 2010 (1) Another program may be editing the same file. If this is the case, be careful not to end up with two different instances of the same file when making changes. Quit, or continue with caution. (2) An edit session for this file crashed. If this is the case, use “:recover” or “vim -r /etc/profile” to recover the changes (see “:help recovery”)。 If you did this already, delete the swap file “/etc/.profile.swp” to avoid this message.“/etc/profile” 28 lines, 497 charactersPress ENTER or type command to continue
我们按回车进入vi编辑器输入:q!退出vi编辑器,在终端输入rm -f /etc/.profile.swp回车,再一次进入vi编辑器发现以前的提示消失。
上面就是Linux打开Vi编辑器时提示E325:ATTENTION错误解决的相关介绍了,当你遇到这个问题的时候按照文中的步骤进行处理,提示就能消失了。
浏览量:2
下载量:0
时间:
今天小编要给大家介绍的是Linux系统下VI编辑器的用法,首先读文网小编要给大家介绍下vi命令是Linux下常用而重要命令,可在全屏幕方式下编辑一个或多个文件。若在vi执行时没有指定一个文件,那么vi命令会自动产生一个无名的空的工作文件。若指定的文件不存在,那么就按指定的文件名创建一个新的文件。若对文件的修改不保存的话,v i命令并不改变原来文件的内容。
注意:vi命令并不锁住所编辑的文件,因此多个用户可能在同时编辑一个文件,那么最后保存的文件版本将被保留。
:e filename 使用filename激活vi (在vi中装入另一个文件filename)。
e!重新装入当前文件,若当前文件有改动,则丢弃以前的改动。
:e+filename 使用filename激活vi ,并从文件尾部开始编辑。
:e+number filename 使用filename激活vi ,并在第number行开始编辑。
:e# 开始编辑另外一个文件。
浏览量:2
下载量:0
时间:
Markdown的语法因简单易学而被广泛使用,所以要想使用Markdown,了解它的语法是很有必要的,下面读文网小编就给大家介绍下Linux使用Markdown的方法,一起来了解下吧。
字体的格式
*斜体*
**粗体**
`重要字体`
》 引用
下面是标题的格式
#标题一
##标题二
###标题三
下面是无序列表
- 列表
- 列表
- 子列表
- 子列表
+ 列表
+ 列表
+ 列表
+ 列表
+ 列表
+ 列表
* 列表
* 列表
* 列表
* 列表
* 列表
* 列表
* 列表
有序列表
1. 有序列表
2. 有序列表
3. 有序列表
连接
[这是百度连接](http://baidu.com)
![这是图片](http://www.linuxidc.com/upload/2014_08/14080211568028.png)
书写代码
```python
import random
class CardGame(object):
“”“ a sample python class ”“”
NB_CARDS = 32
def __init__(self, cards=5):
self.cards = random.sample(range(self.NB_CARDS), 5)
print ‘ready to play’
```
分割线
***
记住这些基本就够用了,如果想深入学习可以看看安装Markdown后提供的一份语法说明:
在sublime中按下Ctrl+Shift+p 打开命令输入框 输入 Open Markdown Cheat Sheet回车后就会打开一个Markdown的文档
上面就是Linux使用Markdown的方法介绍了,本文详细介绍了Markdown的语法知识,只要掌握了这些语法,就能够使用Markdown写博客等。
浏览量:3
下载量:0
时间:
如果没有设置DNS服务器的话,那么系统就不能正常上网了。,那么Linux系统怎么查看和修改DNS配置呢?下面读文网小编就为大家带来了Linux系统查看和修改DNS配置的方法。
1:查看/etc/resolv.con文件
[root@localhost ~]# cat /etc/resolv.conf
nameserver 192.168.xxx.xxx
#search localdomain
[root@localhost ~]#
2:使用nslookup命令查看DNS信息
[root@localhost ~]# nslookup 127.0.0.1 | grep Server
Server: 192.168.xxx.xxx
[root@localhost ~]#
3:使用dig命令来查看DNS信息
[root@localhost ~]# dig
; 《《》》 DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 《《》》
;; global options: printcmd
;; Got answer:
;; -》》HEADER《《- opcode: QUERY, status: NOERROR, id: 36888
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 3
;; QUESTION SECTION:
;。 IN NS
;; ANSWER SECTION:
。 86163 IN NS m.root-servers.net.
。 86163 IN NS a.root-servers.net.
。 86163 IN NS j.root-servers.net.
。 86163 IN NS l.root-servers.net.
。 86163 IN NS e.root-servers.net.
。 86163 IN NS d.root-servers.net.
。 86163 IN NS k.root-servers.net.
。 86163 IN NS f.root-servers.net.
。 86163 IN NS h.root-servers.net.
。 86163 IN NS c.root-servers.net.
。 86163 IN NS g.root-servers.net.
。 86163 IN NS b.root-servers.net.
。 86163 IN NS i.root-servers.net.
;; ADDITIONAL SECTION:
a.root-servers.net. 3599 IN A 112.4.20.71
b.root-servers.net. 86163 IN A 192.228.79.201
i.root-servers.net. 86173 IN A 192.36.148.17
;; Query time: 8 msec
;; SERVER: 192.168.xxx.xxx#53(192.168.xxx.xxx)
;; WHEN: Sat Apr 16 07:34:37 2016
;; MSG SIZE rcvd: 289
[root@localhost ~]# dig | grep SERVER: | awk -F# ‘{ print $1 }’ | awk -F: ‘{ print $2 }’
192.168.xxx.xxx
4:其它一些方法查看DNS信息
在网上看到还有一些其他方法,查看服务器的DNS配置信息,如下所示,不过这些方法,由于环境限制,我没有验证过,仅供参考。
nm-tool | grep DNS
nmcli dev list iface eth0 | grep IP4
浏览量:3
下载量:0
时间:
Linux系统进程在一定条件下可以对任何文件、数据库等进行操作。如果此进程被不法分子用作其他不法用途,将会给系统带来重大危害。那么下面跟着读文网小编来一起了解下Linux系统怎么设置安全管理吧。
1.引导程序安全
Linux系统的root密码是很容易破解的,当然前提是你没有设置引导程序密码,如GRUB或LILO,为了防止通过引导程序破译root密码,强烈建议设置GRUB或LILO的引导密码,可以编辑其配置文件/etc/grub.conf或/etc/lilo.conf,设置password参数。
2.不安全权限设置
大家常见的Linux下文件权限是r w x,其实还有一种权限叫s,如果给某个文件赋予的s权限,那么这个文件在执行的时候就会拥有相应宿主用户或宿主组用户的权限,例如:
#chmod u+s testfile
#ls -la testfile
rwsr----- root root 10 testfile
这样,当这个文件被其它用户执行的时候,此用户就具有了此文件宿主用户root的对testfile的执行权限。类似,当文件的宿主组具有s权限后,执行此文件的用户就具有了此文件宿主组用户对此文件的权限,这是相当危险的。
大家可以试想下,如果命令chmod的文件被赋予了s权限,那么其它用户还有什么事情是不能做的呢?那它就可以更改任何文件的权限了,当然,s权限需要和x权限结合使用,没有x权限的s权限是没有任何意义的。
3.自动注销
当某个用户使用服务器后忘记注销,也是很危险的事情,此时,管理员可以设置/etc/profile文件的timeout参数,当用户一段时间不做任何操作时,系统自动注销此用户。
4. 设置口令复杂度
为了防止系统用户口令过于简单而被破译,可以编辑/etc/login.defs文件,设置系统用户口令复杂度,例如口令最长,最短,过期时间等。
5.禁止不必要用户登陆系统
为了防止其它非系统用户登陆系统,可以在添加用户时,赋予此用户不存在的主目录和不存在的shell环境,当然,最好还更改/etc/passwd和/etc/shadow两个文件的访问权限,使之后root用户可以访问。
Linux系统特点就是因为它是一款免费传播类操作系统,使其具有服务器应有的天然特性,但也正是因为有这些特性,所以在管理不当的情况下,也会造成很严重的安全性问题,所以我们的好好使用它,保护它!
看过“Linux系统怎么设置安全管理”
浏览量:4
下载量:0
时间:
当要传送的文件较大,过程中如果网络中断了,就比较悲剧了。那么Linux下怎么实现断点续传呢?读文网小编分享了Linux下实现断点续传的方法,希望对大家有所帮助。
断点续传的原理
其实断点续传的原理很简单,就是在 Http 的请求上和一般的下载有所不同而已。
打个比方,浏览器请求服务器上的一个文时,所发出的请求如下:
假设服务器域名为 wwww.sjtu.edu.cn,文件名为 down.zip。
GET /down.zip HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-
excel, application/msword, application/vnd.ms-powerpoint, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Connection: Keep-Alive
服务器收到请求后,按要求寻找请求的文件,提取文件的信息,然后返回给浏览器,返回信息如下:
200
Content-Length=106786028
Accept-Ranges=bytes
Date=Mon, 30 Apr 2001 12:56:11 GMT
ETag=W/“02ca57e173c11:95b”
Content-Type=application/octet-stream
Server=Microsoft-IIS/5.0
Last-Modified=Mon, 30 Apr 2001 12:56:11 GMT
所谓断点续传,也就是要从文件已经下载的地方开始继续下载。所以在客户端浏览器传给 Web 服务器的时候要多加一条信息 -- 从哪里开始。
下面是用自己编的一个“浏览器”来传递请求信息给 Web 服务器,要求从 2000070 字节开始。
GET /down.zip HTTP/1.0
User-Agent: NetFox
RANGE: bytes=2000070-
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
仔细看一下就会发现多了一行 RANGE: bytes=2000070-
这一行的意思就是告诉服务器 down.zip 这个文件从 2000070 字节开始传,前面的字节不用传了。
服务器收到这个请求以后,返回的信息如下:
206
Content-Length=106786028
Content-Range=bytes 2000070-106786027/106786028
Date=Mon, 30 Apr 2001 12:55:20 GMT
ETag=W/“02ca57e173c11:95b”
Content-Type=application/octet-stream
Server=Microsoft-IIS/5.0
Last-Modified=Mon, 30 Apr 2001 12:55:20 GMT
和前面服务器返回的信息比较一下,就会发现增加了一行:
Content-Range=bytes 2000070-106786027/106786028
返回的代码也改为 206 了,而不再是 200 了。
知道了以上原理,就可以进行断点续传的编程了。
Java 实现断点续传的关键几点
(1) 用什么方法实现提交 RANGE: bytes=2000070-。
当然用最原始的 Socket 是肯定能完成的,不过那样太费事了,其实 Java 的 net 包中提供了这种功能。代码如下:
URL url = new URL(“http://www.sjtu.edu.cn/down.zip”);
HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection();
// 设置 User-Agent
httpConnection.setRequestProperty(“User-Agent”,“NetFox”);
// 设置断点续传的开始位置
httpConnection.setRequestProperty(“RANGE”,“bytes=2000070”);
// 获得输入流
InputStream input = httpConnection.getInputStream();
从输入流中取出的字节流就是 down.zip 文件从 2000070 开始的字节流。 大家看,其实断点续传用 Java 实现起来还是很简单的吧。 接下来要做的事就是怎么保存获得的流到文件中去了。
保存文件采用的方法。
我采用的是 IO 包中的 RandAccessFile 类。
操作相当简单,假设从 2000070 处开始保存文件,代码如下:
RandomAccess oSavedFile = new RandomAccessFile(“down.zip”,“rw”);
long nPos = 2000070;
// 定位文件指针到 nPos 位置
oSavedFile.seek(nPos);
byte[] b = new byte[1024];
int nRead;
// 从输入流中读入字节流,然后写到文件中
while((nRead=input.read(b,0,1024)) 》 0)
{
oSavedFile.write(b,0,nRead);
}
以上就是断点续传的原理,知道这些原理,相信大家都能够进行编程了吧
看过“Linux下怎么实现断点续传”
浏览量:3
下载量:0
时间:
由于业务需要,要在单个物理网卡上建立多个虚拟网卡,那么Linux怎么增加虚拟网卡呢?读文网小编分享了Linux增加虚拟网卡的方法,希望对大家有所帮助。
创建tap
前两种方法都有一个特点,创建的网卡可有不同的ip地址,但是Mac地址相同。无法用来创建虚拟机。
添加虚拟网卡tap
tunctl -b
附上相关命令简介:
显示网桥信息
brctl show
添加网桥
brctl addbr virbr0
激活网桥
ip link set virbr0 up
添加虚拟网卡tap
tunctl -b
tap0 -------》 执行上面使命就会生成一个tap,后缀从0,1,2依次递增
激活创建的tap
ip link set tap0 up
将tap0虚拟网卡添加到指定网桥上。
brctl addif br0 tap0
给网桥配制ip地址
ifconfig virbr1 169.254.251.4 up
将virbr1网桥上绑定的网卡eth5解除
brctl delif virb1 eth5
给virbr1网桥添加网卡eth6
brctl addif virbr1 eth6
看过“Linux怎么增加虚拟网卡”
浏览量:3
下载量:0
时间:
nux系统磁盘提示满了,可是磁盘内文件加起来的大小和被占用的大小不一致,这就是磁盘丢失的情况,那么Linux系统怎么找回丢失磁盘空间?下面读文网小编就给大家介绍下Linux找回丢失磁盘空间的方法。
收到一个磁盘告警,说某某分区已经满了,然后登录服务器 df 一看,发现磁盘确实快满了,然后你就想找到具体是哪个目录满了,于是 du -s * 一看,却发现所有子目录的大小总和却和df显示的总已使用磁盘空间对不上,有时候甚至还相差很多,于是就纳闷了:我的磁盘空间去哪了呢?
这里就列3种情况:
隐藏文件
linux系统把文件名以。(点号)开头的文件视为隐藏文件,而类似bash里*这样的操作符是不会匹配隐藏文件的,所以如果根目录下有个较大的隐藏文件的话,是不会被du -sh * 统计到的,解决办法就是: du -sh 。[^.]* 。
非空目录被mount
一般挂载其他分区的时候都是建议mount到一个空目录的,那么如果mount到一个非空的目录,情况会怎么样呢?比如/mnt目录本来里面是有文件 的,然后执行了sudo mount /dev/sda6 /mnt。其实这个mount命令完全能正常执行,被mount的分区也能正常访问,只是原先在/mnt里的文件,现在已经访问不到了,包括du也看不到 大小了,但是磁盘空间却还是被占着,因为如果你 umount /mnt 以后,原来的文件都还会回来的。
空洞文件
一个文件的大小和所占磁盘空间也不一定完全一致,比如某个程序一直打开着一个叫log的文件在写,而中间有人用 》 log 命令清除了log的内容,就会产生这样的文件。
大多数情况下来看,以上这三种垃圾,电脑中都会隐藏,那些电脑磁盘不大的朋友们可以勤加清理,可以释放一些空间以被储存其他重要的文件。一般这三种方法清理之后,电脑中的垃圾文件就被清理的差不多了,所以是个还蛮有效的方法呢,试试吧!
看过“Linux系统怎么找回丢失磁盘空间”
浏览量:2
下载量:0
时间:
在Linux的系统中经常碰到字符集导致的错误,那么Linux系统怎么配置多语言环境呢?就让读文网小编来告诉大家Linux系统配置多语言环境的方法吧,希望对大家有所帮助。
修改 /etc/sysconfig/i18n 文件,如
LANG=“en_US.UTF-8”,xwindow会显示英文界面,
LANG=“zh_CN.GB18030”,xwindow会显示中文界面。
还有一种方法 cp /etc/sysconfig/i18n $HOME/.i18n修改 $HOME/.i18n 文件,如
LANG=“en_US.UTF-8”,xwindow会显示英文界面,
LANG=“zh_CN.GB18030”,xwindow会显示中文界面。
这样就可以改变个人的界面语言,而不影响别的用户。
修改后的/etc/sysconfig/i18n 文件为:
代码如下:
LANG=“en_US.UTF-8”
SUPPORTED=“zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en”
SYSFONT=“latarcyrheb-sun16”
LC_ALL=“en_US.UTF-8”
export LC_ALL
设置完毕后重启或者用rc.local使生效
或修改登录用户的.bash_profile文件加入
代码如下:
export LANG=zh_CN.GB18030
export LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN
Ubuntu
比如将Ubuntu 系统语言环境改为英文的en_US.UTF-8:
查看当前系统语言环境,编辑配置文件,将zh_US.UTF-8改为en_US.UTF-8,zh改为en
代码如下:
sudo nano /etc/default/locale
LANG=“en_US.UTF-8”
LANGUAGE=“en_US:en”
CentOS:
方法一、使用光盘或者相当于光盘的媒介
代码如下:
# mount /dev/cdrom /mnt/cdrom
# cd /mnt/cdrom
# rpm -ivh fonts-chinese
方法二、代码如下:
# yum install fonts-chinese
安装好后,设置一下系统的语言,用桌面方式或字符方式均可,修改后包括如下内容即可:
代码如下:
vim /etc/sysconfig/i18n
代码如下:
LANG=“zh_CN.GB2312”
LANGUAGE=“zh_CN.GB18030:zh_CN.GB2312:zh_CN”
SUPPORTED=“zh_CN.GB18030:zh_CN.GB2312:zh_CN.UTF-8:zh:en_US.UTF-8:en_US:en:ja_JP.UTF-8:ja_JP:ja”
SYSFONT=“lat0-sun16”
SYSFONTACM=“8859-15”
上面就是介绍了如何为Linux系统配置多语言环境的基本方法 ,如果你还在为不知如何给Linux系统配置多语言环境而烦恼的话,你们不凡可以按照上面所说的方法去操作,一切已实践行动为主,那就赶紧选择一个你自己喜欢的方法去操作吧!
看过“Linux系统怎么配置多语言环境”
浏览量:4
下载量:0
时间:
有时候我们需要把搭建出来的网站关闭,那么如何关闭Linux服务器上的网站呢?读文网小编分享了关闭Linux服务器上网站的方法,希望对大家有所帮助。
1、打开WDCP服务器管理系统,输入用户名和密码。
2、进入后点击站点列表,找到要关闭的网站。
3、找到右边的操作,用鼠标左键点击【关】。
4、点击【关】会出现关闭提示,点击确定即可。这样就关闭了自己的网站,这个时候你也会发现关闭的网站的操作项变成了【开】,
5、如果你想开启这个网站,找到右边的操作,用鼠标左键点击【开】。
6、点击【开】会出现开启提示,点击确定即可开启网站。
浏览量:2
下载量:0
时间:
对于如何在Windows系统上面怎么进行系统备份相信大家都知道,那么大家知道Linux通过shell脚本怎么备份系统吗?读文网小编分享了Linux通过shell脚本备份系统的方法,希望对大家有所帮助。
脚本如下:
#!/bin/sh
#Automatic Backup Linux System Files
#Author wugk 2013-11-22
#Define Variable
SOURCE_DIR=(
$*
)
TARGET_DIR=/data/backup/
YEAR=`date +%Y`
MONTH=`date +%m`
DAY=`date +%d`
WEEK=`date +%u`
FILES=system_backup.tgz
CODE=$?
if
[ -z “$*” ];then
echo -e “Please Enter Your Backup Files or Directories--------------------------------------------Example $0 /boot /etc 。。。。。。”
exit
fi
#Determine Whether the Target Directory Exists
if
[ ! -d $TARGET_DIR/$YEAR/$MONTH/$DAY ];then
mkdir -p $TARGET_DIR/$YEAR/$MONTH/$DAY
echo “This $TARGET_DIR is Created Successfully !”
fi
#EXEC Full_Backup Function Command
Full_Backup()
{
if
[ “$WEEK” -eq “7” ];then
rm -rf $TARGET_DIR/snapshot
cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $FILES `echo ${SOURCE_DIR[@]}`
[ “$CODE” == “0” ]&&echo -e “--------------------------------------------These Full_Backup System Files Backup Successfully !”
fi
}
#Perform incremental BACKUP Function Command
Add_Backup()
{
cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;
if
[ -f $TARGET_DIR/$YEAR/$MONTH/$DAY/$FILES ];then
read -p “These $FILES Already Exists, overwrite confirmation yes or no ? : ” SURE
if [ $SURE == “no” -o $SURE == “n” ];then
sleep 1 ;exit 0
fi
#Add_Backup Files System
if
[ $WEEK -ne “7” ];then
cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $$_$FILES `echo ${SOURCE_DIR[@]}`
[ “$CODE” == “0” ]&&echo -e “-----------------------------------------These Add_Backup System Files Backup Successfully !”
fi
else
if
[ $WEEK -ne “7” ];then
cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $FILES `echo ${SOURCE_DIR[@]}`
[ “$CODE” == “0” ]&&echo -e “-------------------------------------------These Add_Backup System Files Backup Successfully !”
fi
fi
}
Full_Backup;Add_Backup
上面就是Linux使用shell脚本备份系统的方法介绍了,通过上面的脚本就能自动备份系统,但脚本可能还存在不足的地方,可自行改良优化。
看过“Linux通过shell脚本怎么备份系统”
浏览量:3
下载量:0
时间:
less 与more命令类似,都可以通过翻页键查看上下页的内容,那么Linux的翻页命令more和less怎么使用呢?今天读文网小编与大家分享下Linux的翻页命令more和less使用的具体操作步骤,有需要的朋友不妨了解下。
more
more- 在显示器上阅读文件的过滤器[[ ]]
总览 (SYNOPSIS)
more[-dlfpcsu] [-num] [+/ pattern] [+ linenum] [file ...][[ ]]
描述 (DESCRIPTION)
More是 一个 过滤器, 用于 分页 显示 (一次一屏) 文本. 这个 版本 非常 基本. 用户 应该 知道 less(1) 提供了 more(1) 的 模拟, 并且 做了 增强.[[ ]]
选项 (OPTION)
下面 介绍 命令行选项. 选项 可以 从 环境变量MORE中获取 (要 确保 它们 以 短横线 开头 (``-)), 但是 命令行选项 能够 覆盖 它们.
-num
这个选项指定屏幕的行数 (以整数表示).
-d
让 more 给 用户 显示 提示信息 "[Press space to continue, 'q' to quit.]", 当 用户 按下 其他键 时, 显示 "[Press 'h' for instructions.]", 而不是 扬声器 鸣笛.
-l
More 在 通常情况下 把 ^L (form feed) 当做 特殊字符, 遇到 这个字符 就会 暂停. -l 选项 可以 阻止 这种特性.
-f
使 more 计数 逻辑行, 而不是 屏幕行 (就是说, 长行 不会 断到 下一行).
-p
不卷屏, 而是 清除 整个屏幕, 然后 显示 文本.
-c
不卷屏, 而是 从 每一屏的 顶部 开始 显示 文本, 每 显示完 一行, 就 清除 这一行的 剩余部分.
-s
把 重复的空行 压缩成 一个 空行.
-u
防止下划线.
+/
在 显示 每个文件 前, 搜索 +/ 选项 指定的 文本串.
+num
从行号 num 开始显示.
[[ ]]
命令 (COMMAND)
more的交互命令基于 vi(1). 有些命令 以 一个 十进制数字 开始, 在 下面的描述 里 称之为 k. 后面的 描述中, ^X 指 control-X.
h or ?
帮助: 显示 这些 命令 的 摘要. 你 如果 忘掉 所有 其他的命令, 请记住这个.
SPACE
显示 接下来的 k 行文本. 缺省值 是 当前的屏幕大小.
z
显示 接下来的 k 行文本. 缺省值 是 当前的屏幕大小. 参数 成为 新的缺省值.
RETURN
显示 接下来的 k 行文本. 缺省值 是 1. 参数 成为 新的缺省值.
d or ^D
卷屏 k 行. 缺省值 是 当前的 卷屏大小, 初始化为 11. 参数 成为 新的缺省值.
q 或 Q 或 INTERRUPT
退出.
s
向前跳过 k 行文本. 缺省值 是 1.
f
向前跳过 k 屏文本. 缺省值 是 1.
b or ^B
向后跳回 k 屏文本. 缺省值 是 1.
跳到 上一次 搜索 开始 的 地方.
=
显示当前行号.
/ pattern
搜索 第 k 个 符合 正则表达式的 文本串. 缺省值 是 1.
n
搜索 最后 第 k 个 符合 正则表达式的 文本串. 缺省值 是 1.
! or :!
在子 shell 中执行 .
v
启动 /usr/bin/vi, 指向 当前行.
^L
刷新屏幕.
:n
跳到 后面 第 k 个 文件. 缺省值 是 1.
:p
跳到 前面 第 k 个 文件. 缺省值 是 1.
:f
显示 当前文件名 和 行号.
.
重复上次命令.
[[ ]]
环境 (ENVIRONMENT)
More利用 下面的 环境变量 (如果 它们 存在):
MORE
这个变量 设置 你 喜欢的 more 选项.
SHELL
当前使用的 shell (一般说来 就是 登录 shell).
TERM
指定 终端类型, more 用它来 获取 操作屏幕 所需的 终端特性
例:
代码如下:
[root@localhost zhangy]# more test.php #查看文件
[root@localhost zhangy]# netstat -tpnl |more #常用方式,分页显示
less
less 与more命令类似,但可以通过翻页键查看上下页的内容
-b<缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o<文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x<数字> 将“tab”键显示为规定的数字空格
命令内部操作
按键功能如下:
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
1) 向前搜索
/ : 使用一个模式进行搜索,并定位到下一个匹配的文本
n : 向前查找下一个匹配的文本
N : 向后查找前一个匹配的文本
2) 向后搜索
? : 使用模式进行搜索,并定位到前一个匹配的文本
n : 向后查找下一个匹配的文本
N : 向前查找前一个匹配的文本
2 全屏导航
ctrl + F :向前移动一屏
ctrl + B :向后移动一屏
ctrl + D :向前移动半屏
ctrl + U :向后移动半屏
3 单行导航
j : 向前移动一行
k : 向后移动一行
4 其它导航
G : 移动到最后一行
g : 移动到第一行
q / ZZ : 退出 less 命令
5 编辑文件
v : 进入编辑模式,使用配置的编辑器编辑当前文件
6 标记导航
当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置。
ma : 使用 a 标记文本的当前位置
'a : 导航到标记 a 处
7 浏览多个文件
方式一,传递多个参数给 less,就能浏览多个文件。
less file1 file2
方式二,正在浏览一个文件时,使用 :e 打开另一个文件。
less file1
:e file2
当打开多个文件时,使用如下命令在多个文件之间切换
:n - 浏览下一个文件
:p - 浏览前一个文件
例:
代码如下:
[root@localhost zhangy]# less test.php #查看文件
[root@localhost zhangy]# netstat -tpnl |less #常用方式,分页显示
看过“Linux的翻页命令more和less怎么使用”
浏览量:4
下载量:0
时间:
最近有用户反映,在Linux系统下无法访问mysql,那么如何解决Linux系统无法访问mysql呢?读文网小编分享了解决Linux系统无法访问mysql的方法,希望对大家有所帮助。
1、问题及异常
ThreadPoolAsynchronousRunner - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@75d634ea -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 3
Active Tasks:
2、查找原因
费劲周知,确定是MySQL权限的问题
3、解决过程
1》 mysql -uroot -proot mydbName
2》 grant all privileges on *.* to wangs@‘%’ identified by ‘123456’;
3》 flush privileges;
4》 exit;
5》 /etc/init.d/mysql restart
4、命令的说明
进入 mysql ,用户为 root,密码为 root,数据库为 mydbName,-u 意为用户,-p 意为密码,
增加用户 wangs,所有权限,数据库为 *,后面的 .* 不可少,% 代表对所有远程的 IP 地址,如果要限定 IP 地址的话,单独写上 IP 地址,
密码是 123456,注意引号 ‘ 不可少,用来表示是字符串。
以上命令和过程均不可省略。
以上就是Linux系统下无法访问mysql的解决办法,用户在遇到同样故障时可根据问题的异常状况来找出原因,然后再对症下药的解决问题。
看过“如何解决Linux系统无法访问mysql”
浏览量:4
下载量:0
时间:
semanage命令是用来查询与修改SELinux默认目录的安全上下文,那么大家知道Linux怎么安装使用semanage吗?接下来大家跟着读文网小编一起来了解一Linux安装使用semanage下的解决方法吧。
Selinux极大的增强了Linux系统的安全性,能将用户权限关在笼子里,如httpd服务,apache默认只能访问/var/www目录,并只能监听80和443端口,因此能有效的防范0-day类的攻击。举例来说,系统上的 Apache 被发现存在一个漏洞,使得某远程用户可以访问系统上的敏感文件(比如 /etc/passwd 来获得系统已存在用户),而修复该安全漏洞的 Apache 更新补丁尚未释出。此时 SELinux 可以起到弥补该漏洞的缓和方案。因为 /etc/passwd 不具有 Apache 的访问标签,所以 Apache 对于 /etc/passwd 的访问会被 SELinux 阻止。
CentOS系统自带的chcon工具只能修改文件、目录等的文件类型和策略,无法对端口、消息接口和网络接口等进行管理,semanage能有效胜任SELinux的相关配置工作。
安装:
代码如下:
# yum -y install policycoreutils-python
用法:
semanage命令用来查询与修改SELinux默认目录的安全上下文。
semanage fcontext [-S store] -{a|d|m|l|n|D} [-frst] file_spec
semanage fcontext [-S store] -{a|d|m|l|n|D} -e replacement target
主要参数:
-a:添加
-d:删除
-m:修改
-l:列举
-n:不打印说明头
-D:全部删除
-f:文件
-s:用户
-t:类型
r:角色
基本使用:
管理登录linux的用户和SELinux局限的用户之间的映射。
代码如下:
semanage login [-S store] -{a|d|m|l|n|D} [-sr] login_name | %groupname
管理策略模块:
代码如下:
semanage module [-S store] -{a|d|l} [-m [--enable | --disable] ] module_name
管理网络端口类型定义
代码如下:
semanage port [-S store] -{a|d|m|l|n|D} [-tr] [-p proto] port | port_range
例:如apache采用非标准端口,需执行如下命令:
代码如下:
emanage port -a -t http_port_t -p tcp port_number
查看当前允许的httpd端口:
代码如下:
# semanage port -l|grep http
http_cache_port_t tcp 3128, 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 8888, 80, 443, 488, 8008, 8009, 8443
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
注意:8888是我刚才添加的
管理网络接口类型定义
代码如下:
semanage interface [-S store] -{a|d|m|l|n|D} [-tr] interface_spec
管理网络节点类型定义
代码如下:
semanage node [-S store] -{a|d|m|l|n|D} [-tr] [ -p protocol ] [-M netmask] address
管理文件中映射定义
代码如下:
semanage fcontext [-S store] -{a|d|m|l|n|D} [-frst] file_spec
semanage fcontext [-S store] -{a|d|m|l|n|D} -e replacement target
例:让 Apache 可以访问位于非默认目录下的网站文件
首先,用 semanage fcontext -l | grep '/var/www' 获知默认 /var/www 目录的 SELinux 上下文:
代码如下:
/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
从中可以看到 Apache 只能访问包含 httpd_sys_content_t 标签的文件。
假设希望 Apache 使用 /srv/www 作为网站文件目录,那么就需要给这个目录下的文件增加 httpd_sys_content_t 标签,分两步实现。
首先为 /srv/www 这个目录下的文件添加默认标签类型:semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?' 然后用新的标签类型标注已有文件:restorecon -Rv /srv/www 之后 Apache 就可以使用该目录下的文件构建网站了。
其中 restorecon 在 SELinux 管理中很常见,起到恢复文件默认标签的作用。比如当从用户主目录下将某个文件复制到 Apache 网站目录下时,Apache 默认是无法访问,因为用户主目录的下的文件标签是 user_home_t。此时就需要 restorecon 将其恢复为可被 Apache 访问的 httpd_sys_content_t 类型:
代码如下:
restorecon -v /srv/www/foo.com/html/file.html
restorecon reset /srv/www/foo.com/html/file.html context unconfined_u:object_r:user_home_t:s0->system_u:object_r:httpd_sys_content_t:s0
semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?" //新建一条规则,指定/web目录及其下的所有文件的扩展属性为httpd_sys_content_t
看过“Linux怎么安装使用semanage”
浏览量:4
下载量:0
时间:
众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的。就让读文网小编来告诉大家Linux怎么设置用户通过SFTP访问目录的权限的方法吧,希望对大家有所帮助。
sftp和ftp是两种协议是不同的,sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动。
1.查看openssh软件版本,想sftp服务用户只能访问特定的文件目录,版本需要4.8以上
代码如下:
[root@localhost ftp]# rpm -qa | grep openssh
openssh-server-5.3p1-81.el6_3.x86_64
openssh-5.3p1-81.el6_3.x86_64
openssh-clients-5.3p1-81.el6_3.x86_64
2.新增用户,限制用户只能通过sftp访问
代码如下:
[root@localhost ftp]# useradd -m -d /opt/ftp/dave -s /sbin/nologin dave
3.限制用户通过sftp登录进来时只能进入主目录,修改/etc/ssh/sshd_config文件
代码如下:
[root@localhost ftp]# vim /etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match User dave
ChrootDirectory /opt/ftp/dave
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
重启ssh
4.测试访问
代码如下:
root@10.1.1.200:test# sftp -oPort=22 dave@10.1.6.175
Connecting to 10.1.6.175...
dave@10.1.6.175's password:
Read from remote host 10.1.6.175: Connection reset by peer
Couldn't read packet: Connection reset by peer
发现连接不上,查看日志
代码如下:
[root@localhost ftp]# tail /var/log/messages
Jan 6 11:41:41 localhost sshd[4907]: fatal: bad ownership or modes for chroot directory "/opt/ftp/dave"
Jan 6 11:41:41 localhost sshd[4905]: pam_unix(sshd:session): session closed for user dave
解决方法:
目录权限设置上要遵循2点:
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是755。
如果不能遵循以上2点,即使是该目录仅属于某个用户,也可能会影响到所有的SFTP用户。
代码如下:
[root@localhost ftp]# ll
total 4
drwxr-xr-x 3 dave dave 4096 Jan 5 13:06 dave
[root@localhost ftp]# chown root:root dave
[root@localhost ftp]# chmod 755 dave
[root@localhost ftp]# ll
total 4
drwxr-xr-x 3 root root 4096 Jan 5 13:06 dave
然后在测试通过
代码如下:
root@10.1.1.200:test# sftp -oPort=22 dave@10.1.6.175
Connecting to 10.1.6.175...
dave@10.1.6.175's password:
sftp> ls
test
sftp> cd ..
sftp> ls
test
sftp> cd test
sftp> ls
1.txt
sftp> get 1.txt
Fetching /test/1.txt to 1.txt
/test/1.txt
可以看到已经限制用户在家目录,同时该用户也不能登录该机器。
看过“Linux怎么设置用户通过SFTP访问目录的权限”
浏览量:4
下载量:0
时间:
平常我们不会去注意系统的最后重启时间,但在特殊的情况下我们还是会去查看的,那么Linux系统怎么查看最后重启时间呢?就让读文网小编来告诉大家Linux系统查看最后重启时间的方法吧,希望对大家有所帮助。
使用who命令带上‘-b’选项。
# who -b
system boot Jul 30 13:44
浏览量:4
下载量:0
时间:
rsh命令用于连接到远程的指定主机并执行指定的命令。那么Linux中rsh怎么远程使用shell命令呢?读文网小编分享了Linux中rsh远程使用shell命令的方法,希望对大家有所帮助。
rsh有两种使用模式:
rsh $host : 远程登录,启动交互式进程。
rsh $host $command :远程执行命令,并显示输出。
rsh hosthostcommand
rsh $host $command的作用是:
1.在远程机器上执行命令$command
2.通过网络连接(socket)重定向当前进程和远端进程的标准输入和标准输出
3.远端rsh进程在远端进程结束后结束
4.本地rsh进程读取远端进程的标准输出直到结束(EOF)
深刻理解这个执行过程有助于理解各种“奇怪”的现象和用法。
代码如下:
+ Suspended (tty input)
$ rsh localhost infinite-loop &
[1] + Suspended (tty input) rsh pv007 infinite-loop
$ rsh -n localhost infinite-loop &
# 执行正常
后台执行rsh命令时,提示了和标准输入相关的错误信息。这是因为rsh默认会把当前窗口的标准输入重定向到远端进程。
而本地rsh进程作为后台程序运行的话,标准输入被“阻塞”了。
通过-n选项制定不需要重定向标准输入(stdin)。
远端进程的执行
执行命令
代码如下:
rsh somehost infinite-loop
在远端机器上查看相关进程:
代码如下:
$ pstree -a -p 3353
in.rshd,3353
└─csh,3363 -c infinite-loop
└─infinite-loop,3632 /u/szhang/bin/infinite-loop
可以看出,远端机器上的rshd进程负责启动远端进程。而且可以看出是通过csh -c的方式启动的(这里用户的默认Shell是C Shell)。
远端进程的标准IO
检查远端进程的文件描述符:
代码如下:
$ ls -l /proc/3363/fd /proc/3632/fd
/proc/3363/fd:
total 0
lrwx------. 1 Jul 30 23:47 16 -> socket:[1184748899]
lrwx------. 1 Jul 30 23:47 17 -> socket:[1184748899]
l-wx------. 1 Jul 30 23:47 18 -> pipe:[1184749092]
lrwx------. 1 Jul 30 23:47 19 -> socket:[1184748899]
代码如下:
/proc/3632/fd:
total 0
lrwx------. 1 Jul 30 23:47 0 -> socket:[1184748899]
lrwx------. 1 Jul 30 23:47 1 -> socket:[1184748899]
l-wx------. 1 Jul 30 23:47 2 -> pipe:[1184749092]
可以看出远端里程的标准输入输出是被重定向到socket上的:
1.stdin 和 stdout 共享一个socket连接
2.stderr 则通过一个pipe重定向(重定向到stdout ???)
3.rsh 的返回值
rsh程序自身的返回值表明的是rsh自身的运行状况,而不是远端进程的返回值。
获得远端进程的返回值
代码如下:
# 远端是C Shell
$ rsh $host "$command ; echo $status"
代码如下:
# 远端是Bash Shell
$ rsh $host "$command ; echo $?"
代码如下:
# 远端Shell类型不确定
$ rsh $host "sh -c '$command ; echo $?'"
启动远端进程所用的Shell
由于用于启动远端进程的Shell类型是未知的,而有些操作的语法在不同Shell里是不同的。
比如输入输出重定向、命令返回值等。
解决该问题的方法之一是通过明确指定的Shell来启动真正需要的里程。比如:
代码如下:
# 不确定远端Shell的类型,显式通过Bash Shell来启动需要的进程
$ rsh -n $host "sh -c '$command > /dev/null 2>&1'"
另一种思路,则是通过一个wrapper程序来启动真正的命令。
通过rsh在远端执行后台进程
想在远端机器上执行后台进程。命令rsh $host "$command &"是不起作用的,会导致本地的rsh进程不能结束。
背后的原因应该是,$command的标准输入输出通常仍然绑定在rsh连接的socket上,从而导致本地的rsh进程无法读取到文件结束符EOF。
知道了原因就知道该怎么办了,关键是关闭后台进程续定在rsh连接上的标准输入输出。
代码如下:
# 如果远端Shell是C Shell
$ rsh -n $host "$command >& /dev/null &"
代码如下:
# 如果远端Shell是Bash Shell
$ rsh -n $host "$command > /dev/null 2>&1 &"
代码如下:
# 不确定远端Shell的类型
$ rsh -n $host "sh -c '$command > /dev/null 2>&1 &'"
但上面这样重定向的办法有个缺点是不能得到任何远端进程的输出,而有时我们希望获得一些输出信息。
这时就需要远端进程能够以守护进程(daemon)的方式运行。
这种情况下,rsh命令可以简单地写作:$ rsh -n $host "$command &"
远端后台进程的内容用Tcl表示,大意如下:
代码如下:
#/bin/env tclsh
puts "I am a background job"
puts "This Can Be Seen by Remote rsh Process"
close stdout
close stderr
# rsh连接到此应该结束。
puts "This Can NOT Be Seen by Remote rsh Process"
更进就步,我们可以甚至忽略rsh命令中的后台运行符:$ rsh -n $host "$command"
这时远端进程需要通过fork的方式结束自己,并启动真正的后台进程(守护进程)。
rsh进程的阻塞和超时处理
在程序中调用rsh $host $command时可能由于各种奇怪的原因发生rsh进程的阻塞,这不是我们希望看到的。
我们希望设置一个超时(timeout)机制来解决这个问题。
在Tcl程序中的一种实现可以这样: TODO
TCP Connection连接数过多引起的rsh失败
监控邮件显示rsh $host $command命令失败,错误提示为“poll: protocol failure in circuit setup"
怀疑是网络连接数过多所引起。
rsh $host $command 的网络连接过程
命令rsh $host连接远程主机的513端口。
命令rsh $host $command则连接远程主机的514端口,并随后发送一个本地端口号给远程主机,要求远程主机建立一个新的TCP连接到这个端口(还不清楚这个新的连接有什么作用)。然后才是传送命令和等待命令结束。
这样做的结果就是在rsh $host $command进程过多时,本地开放的端口资源被消耗完了,从而导致新的rsh $host $command失败。
这是rsh $host的使用则依然正常。
这里提到的rsh的缺陷,也是建议尽量使用ssh的原因之一。
没有完全关闭的网络连接:
在远程主机上kill掉相关的rsh进程后,会导致TCP连接没有完全关闭。
netstat命令显示CLOSE_WAIT状态,端口资源并没有释放出来。
根据配置文件/proc/sys/net/ipv4/tcp_keepalive_time显示,需要等待2个小时,那些端口才会因为超时而被真正关闭,从而释放出来。
代码如下:
%> netstat -a | grep localhost
tcp 0 0 localhost:933 localhost:935 CLOSE_WAIT
%> cat /proc/sys/net/ipv4/tcp_keepalive_time
7200 ;# in seconds. = 2 hours
%> echo "net.ipv4.tcp_keepalive_time = 120" >> /etc/sysctl.con
看过“Linux中rsh怎么远程使用shell命令”
浏览量:3
下载量:0
时间: